home *** CD-ROM | disk | FTP | other *** search
/ LG Super CD / LG Super CD.iso / bitpim / bitpim-0.62-setup.exe / {app} / bitpim.exe / posixpath.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2003-11-06  |  9.9 KB  |  355 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.3)
  3.  
  4. import sys
  5. import os
  6. import stat
  7. __all__ = [
  8.     'normcase',
  9.     'isabs',
  10.     'join',
  11.     'splitdrive',
  12.     'split',
  13.     'splitext',
  14.     'basename',
  15.     'dirname',
  16.     'commonprefix',
  17.     'getsize',
  18.     'getmtime',
  19.     'getatime',
  20.     'getctime',
  21.     'islink',
  22.     'exists',
  23.     'isdir',
  24.     'isfile',
  25.     'ismount',
  26.     'walk',
  27.     'expanduser',
  28.     'expandvars',
  29.     'normpath',
  30.     'abspath',
  31.     'samefile',
  32.     'sameopenfile',
  33.     'samestat',
  34.     'curdir',
  35.     'pardir',
  36.     'sep',
  37.     'pathsep',
  38.     'defpath',
  39.     'altsep',
  40.     'extsep',
  41.     'realpath',
  42.     'supports_unicode_filenames']
  43. curdir = '.'
  44. pardir = '..'
  45. extsep = '.'
  46. sep = '/'
  47. pathsep = ':'
  48. defpath = ':/bin:/usr/bin'
  49. altsep = None
  50.  
  51. def normcase(s):
  52.     return s
  53.  
  54.  
  55. def isabs(s):
  56.     return s.startswith('/')
  57.  
  58.  
  59. def join(a, *p):
  60.     path = a
  61.     for b in p:
  62.         if b.startswith('/'):
  63.             path = b
  64.             continue
  65.         if path == '' or path.endswith('/'):
  66.             path += b
  67.             continue
  68.         path += '/' + b
  69.     
  70.     return path
  71.  
  72.  
  73. def split(p):
  74.     i = p.rfind('/') + 1
  75.     (head, tail) = (p[:i], p[i:])
  76.     if head and head != '/' * len(head):
  77.         head = head.rstrip('/')
  78.     
  79.     return (head, tail)
  80.  
  81.  
  82. def splitext(p):
  83.     i = p.rfind('.')
  84.     if i <= p.rfind('/'):
  85.         return (p, '')
  86.     else:
  87.         return (p[:i], p[i:])
  88.  
  89.  
  90. def splitdrive(p):
  91.     return ('', p)
  92.  
  93.  
  94. def basename(p):
  95.     return split(p)[1]
  96.  
  97.  
  98. def dirname(p):
  99.     return split(p)[0]
  100.  
  101.  
  102. def commonprefix(m):
  103.     if not m:
  104.         return ''
  105.     
  106.     prefix = m[0]
  107.     for item in m:
  108.         for i in range(len(prefix)):
  109.             if prefix[:i + 1] != item[:i + 1]:
  110.                 prefix = prefix[:i]
  111.                 if i == 0:
  112.                     return ''
  113.                 
  114.                 break
  115.                 continue
  116.         
  117.     
  118.     return prefix
  119.  
  120.  
  121. def getsize(filename):
  122.     return os.stat(filename).st_size
  123.  
  124.  
  125. def getmtime(filename):
  126.     return os.stat(filename).st_mtime
  127.  
  128.  
  129. def getatime(filename):
  130.     return os.stat(filename).st_atime
  131.  
  132.  
  133. def getctime(filename):
  134.     return os.stat(filename).st_ctime
  135.  
  136.  
  137. def islink(path):
  138.     
  139.     try:
  140.         st = os.lstat(path)
  141.     except (os.error, AttributeError):
  142.         return False
  143.  
  144.     return stat.S_ISLNK(st.st_mode)
  145.  
  146.  
  147. def exists(path):
  148.     
  149.     try:
  150.         st = os.stat(path)
  151.     except os.error:
  152.         return False
  153.  
  154.     return True
  155.  
  156.  
  157. def isdir(path):
  158.     
  159.     try:
  160.         st = os.stat(path)
  161.     except os.error:
  162.         return False
  163.  
  164.     return stat.S_ISDIR(st.st_mode)
  165.  
  166.  
  167. def isfile(path):
  168.     
  169.     try:
  170.         st = os.stat(path)
  171.     except os.error:
  172.         return False
  173.  
  174.     return stat.S_ISREG(st.st_mode)
  175.  
  176.  
  177. def samefile(f1, f2):
  178.     s1 = os.stat(f1)
  179.     s2 = os.stat(f2)
  180.     return samestat(s1, s2)
  181.  
  182.  
  183. def sameopenfile(fp1, fp2):
  184.     s1 = os.fstat(fp1)
  185.     s2 = os.fstat(fp2)
  186.     return samestat(s1, s2)
  187.  
  188.  
  189. def samestat(s1, s2):
  190.     if s1.st_ino == s2.st_ino:
  191.         pass
  192.     return s1.st_dev == s2.st_dev
  193.  
  194.  
  195. def ismount(path):
  196.     
  197.     try:
  198.         s1 = os.stat(path)
  199.         s2 = os.stat(join(path, '..'))
  200.     except os.error:
  201.         return False
  202.  
  203.     dev1 = s1.st_dev
  204.     dev2 = s2.st_dev
  205.     if dev1 != dev2:
  206.         return True
  207.     
  208.     ino1 = s1.st_ino
  209.     ino2 = s2.st_ino
  210.     if ino1 == ino2:
  211.         return True
  212.     
  213.     return False
  214.  
  215.  
  216. def walk(top, func, arg):
  217.     
  218.     try:
  219.         names = os.listdir(top)
  220.     except os.error:
  221.         return None
  222.  
  223.     func(arg, top, names)
  224.     for name in names:
  225.         name = join(top, name)
  226.         
  227.         try:
  228.             st = os.lstat(name)
  229.         except os.error:
  230.             continue
  231.  
  232.         if stat.S_ISDIR(st.st_mode):
  233.             walk(name, func, arg)
  234.             continue
  235.     
  236.  
  237.  
  238. def expanduser(path):
  239.     if not path.startswith('~'):
  240.         return path
  241.     
  242.     i = path.find('/', 1)
  243.     if i < 0:
  244.         i = len(path)
  245.     
  246.     if i == 1:
  247.         if 'HOME' not in os.environ:
  248.             import pwd
  249.             userhome = pwd.getpwuid(os.getuid()).pw_dir
  250.         else:
  251.             userhome = os.environ['HOME']
  252.     else:
  253.         import pwd
  254.         
  255.         try:
  256.             pwent = pwd.getpwnam(path[1:i])
  257.         except KeyError:
  258.             return path
  259.  
  260.         userhome = pwent.pw_dir
  261.     if userhome.endswith('/'):
  262.         i += 1
  263.     
  264.     return userhome + path[i:]
  265.  
  266. _varprog = None
  267.  
  268. def expandvars(path):
  269.     global _varprog
  270.     if '$' not in path:
  271.         return path
  272.     
  273.     if not _varprog:
  274.         import re
  275.         _varprog = re.compile('\\$(\\w+|\\{[^}]*\\})')
  276.     
  277.     i = 0
  278.     while True:
  279.         m = _varprog.search(path, i)
  280.         if not m:
  281.             break
  282.         
  283.         (i, j) = m.span(0)
  284.         name = m.group(1)
  285.         if name.startswith('{') and name.endswith('}'):
  286.             name = name[1:-1]
  287.         
  288.         if name in os.environ:
  289.             tail = path[j:]
  290.             path = path[:i] + os.environ[name]
  291.             i = len(path)
  292.             path += tail
  293.             continue
  294.         i = j
  295.     return path
  296.  
  297.  
  298. def normpath(path):
  299.     if path == '':
  300.         return '.'
  301.     
  302.     initial_slashes = path.startswith('/')
  303.     if initial_slashes and path.startswith('//') and not path.startswith('///'):
  304.         initial_slashes = 2
  305.     
  306.     comps = path.split('/')
  307.     new_comps = []
  308.     for comp in comps:
  309.         if comp in ('', '.'):
  310.             continue
  311.         
  312.         if not comp != '..':
  313.             if not initial_slashes and not new_comps and new_comps and new_comps[-1] == '..':
  314.                 new_comps.append(comp)
  315.                 continue
  316.         if new_comps:
  317.             new_comps.pop()
  318.             continue
  319.     
  320.     comps = new_comps
  321.     path = '/'.join(comps)
  322.     if initial_slashes:
  323.         path = '/' * initial_slashes + path
  324.     
  325.     if not path:
  326.         pass
  327.     return '.'
  328.  
  329.  
  330. def abspath(path):
  331.     if not isabs(path):
  332.         path = join(os.getcwd(), path)
  333.     
  334.     return normpath(path)
  335.  
  336.  
  337. def realpath(filename):
  338.     filename = abspath(filename)
  339.     bits = [
  340.         '/'] + filename.split('/')[1:]
  341.     for i in range(2, len(bits) + 1):
  342.         component = join(*bits[0:i])
  343.         if islink(component):
  344.             resolved = os.readlink(component)
  345.             (dir, file) = split(component)
  346.             resolved = normpath(join(dir, resolved))
  347.             newpath = join(*[
  348.                 resolved] + bits[i:])
  349.             return realpath(newpath)
  350.             continue
  351.     
  352.     return filename
  353.  
  354. supports_unicode_filenames = False
  355.